Middleware কি এবং এর ভূমিকা

Web Development - জ্যাঙ্গো (Django) - Django ডেকোরেটর এবং Middleware
196

Middleware হল একটি কনফিগারেবল সিস্টেম যা Django এর রিকোয়েস্ট-রেসপন্স চক্রে (request-response cycle) একাধিক প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। এটি একটি বৈশিষ্ট্য যা HTTP রিকোয়েস্ট এবং রেসপন্সের মধ্যবর্তী স্তরে কাজ করে। মডিউলগুলো সাধারণত রিকোয়েস্টে কিছু পরিবর্তন বা প্রক্রিয়া করার পর, তারপর রেসপন্সকে প্রক্রিয়া করে ব্যবহারকারীর কাছে পাঠানোর দায়িত্বে থাকে। এটি Django এর ফ্রেমওয়ার্কের গুরুত্বপূর্ণ একটি অংশ যা বিভিন্ন ধরণের কাজ সহজভাবে সম্পাদন করতে সাহায্য করে, যেমন নিরাপত্তা, কুকিজ এবং সেশন ম্যানেজমেন্ট, লগিং, রিকোয়েস্ট সংশোধন ইত্যাদি।


Middleware এর ভূমিকা

Django তে Middleware কনফিগার করা হয় যাতে বিভিন্ন প্রকারের প্রক্রিয়া/কার্যক্রম স্বয়ংক্রিয়ভাবে HTTP রিকোয়েস্ট বা রেসপন্সে প্রয়োগ করা যায়। এই প্রক্রিয়াগুলির মধ্যে কিছু গুরুত্বপূর্ণ কাজ হচ্ছে:

  • নিরাপত্তা (Security)
  • রিকোয়েস্ট লগিং (Request logging)
  • রেসপন্স লগিং (Response logging)
  • অথেনটিকেশন (Authentication)
  • সেশন এবং কুকিজ ম্যানেজমেন্ট (Session and cookie management)
  • রিকার্সিভ ফিল্টারিং (Content filtering)
  • রিকোয়েস্ট প্রক্রিয়াকরণ (Request preprocessing)

Middleware এর কার্যপ্রণালী

Django মডেলটি HTTP রিকোয়েস্ট আসার সময় middleware stack ব্যবহার করে, যা একটি সিরিজের ফাংশন বা ক্লাসের মাধ্যমে রিকোয়েস্ট এবং রেসপন্স প্রক্রিয়া করে।

রিকোয়েস্ট প্রক্রিয়া:

  • প্রথমে রিকোয়েস্ট Django অ্যাপ্লিকেশনে পৌঁছানোর আগে middleware stack এর মধ্যে চলে যায়। এটি HTTP রিকোয়েস্টকে যাচাই বা পরিবর্তন করতে পারে।
  • একাধিক middleware ফাংশন বা ক্লাস রিকোয়েস্টে কাজ করতে পারে, এবং তারা একটি সিকোয়েন্স অনুযায়ী কার্যকর হয়। এর মধ্যে প্রত্যেকটি middleware রিকোয়েস্টে কিছু পরিবর্তন করতে পারে বা তাকে এগিয়ে যেতে দিতে পারে।

রেসপন্স প্রক্রিয়া:

  • যখন Django রিকোয়েস্ট প্রক্রিয়া সম্পন্ন করে এবং রেসপন্স তৈরি করে, তখন সেই রেসপন্সও middleware stack দিয়ে ফেরত আসে।
  • প্রতিটি middleware ফাংশন বা ক্লাস রেসপন্সে কিছু পরিবর্তন বা অ্যাডজাস্টমেন্ট করতে পারে (যেমন রেসপন্সে হেডার অ্যাড করা, বা রেসপন্সের কনটেন্ট পরিবর্তন করা)।

Middleware এর উদাহরণ

Django তে কিছু সাধারণ middleware থাকে, যা ডিফল্টভাবে ইনস্টল করা থাকে। তাদের মধ্যে কিছু হলো:

  • SecurityMiddleware: এটি নিরাপত্তা সংক্রান্ত কাজের জন্য ব্যবহৃত হয়, যেমন HTTPS বাধ্যতামূলক করা।
  • SessionMiddleware: এটি ইউজারের সেশন পরিচালনা করে।
  • AuthenticationMiddleware: এটি ইউজারের অথেনটিকেশন ম্যানেজ করে, যেমন ইউজার লগইন স্ট্যাটাস।
  • CommonMiddleware: এটি কিছু সাধারণ কাজ করে, যেমন 404 পেজের জন্য কাস্টম রিডাইরেক্টিং।

Django Middleware কনফিগারেশন

Django প্রকল্পে settings.py ফাইলে MIDDLEWARE নামক একটি তালিকা (list) থাকে, যেখানে সমস্ত middleware কনফিগার করা হয়। এই তালিকায় কোন middleware প্রথমে, কোনটি পরবর্তীতে, এবং কোনটি পরে কাজ করবে, তা নির্ধারিত থাকে।

এখানে একটি উদাহরণ:

# settings.py

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',  # প্রথমে নিরাপত্তার কাজ হবে
    'django.contrib.sessions.middleware.SessionMiddleware',  # সেশন সম্পর্কিত কাজ
    'django.middleware.common.CommonMiddleware',  # সাধারণ ফিল্টারিং
    'django.middleware.csrf.CsrfViewMiddleware',  # CSRF সুরক্ষা
    'django.contrib.auth.middleware.AuthenticationMiddleware',  # অথেনটিকেশন
    'django.contrib.messages.middleware.MessageMiddleware',  # মেসেজ পরিচালনা
    'django.middleware.clickjacking.XFrameOptionsMiddleware',  # XFrame অপশন
]

Middleware তৈরি করা

আপনি যদি আপনার নিজস্ব middleware তৈরি করতে চান, তাহলে আপনাকে একটি ক্লাস বা ফাংশন তৈরি করতে হবে যা নির্দিষ্ট কিছু কাজ করবে।

ক্লাস বেসড Middleware:

# middleware.py

from django.utils.deprecation import MiddlewareMixin

class CustomMiddleware(MiddlewareMixin):
    def process_request(self, request):
        # রিকোয়েস্ট প্রক্রিয়া করার আগে কিছু করতে পারেন
        print("Processing request:", request.path)

    def process_response(self, request, response):
        # রেসপন্স প্রক্রিয়া করার আগে কিছু করতে পারেন
        print("Processing response:", response.status_code)
        return response

এখন, এই CustomMiddleware কে MIDDLEWARE তালিকায় যোগ করতে হবে:

# settings.py

MIDDLEWARE = [
    'myapp.middleware.CustomMiddleware',  # আমাদের কাস্টম মডিউল
]

ফাংশন বেসড Middleware:

Django 1.10 এর পর থেকে ফাংশন বেসড middleware সমর্থিত। উদাহরণ:

# middleware.py

def custom_middleware(get_response):
    def middleware(request):
        # রিকোয়েস্ট প্রক্রিয়া করার আগে কিছু করতে পারেন
        print("Request processing:", request.path)
        response = get_response(request)
        # রেসপন্স প্রক্রিয়া করার আগে কিছু করতে পারেন
        print("Response processing:", response.status_code)
        return response
    return middleware

এখন এই middleware ফাংশনটিকেও MIDDLEWARE তালিকায় যোগ করা যেতে পারে।


Django তে Middleware এমন একটি প্রক্রিয়া যা রিকোয়েস্ট এবং রেসপন্সের মধ্যে বিভিন্ন কাজ করে, যেমন সুরক্ষা, সেশন ম্যানেজমেন্ট, অথেনটিকেশন, এবং কাস্টম লজিক প্রক্রিয়া। এটি Django অ্যাপ্লিকেশনের কার্যকারিতা বৃদ্ধি করতে এবং প্রক্রিয়া সহজ করতে সহায়তা করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...